// Copyright 2007-2008 Rory Plaire (codekaizen@gmail.com)

using System;

namespace NPack.Interfaces
{
	/// <summary>
	/// Every class that defines the standard arithmetic operations +, -, *, / should
	/// consider implementing this interface. This interface does not contain
	/// <see cref="IInvertible{T}"/> because some arithmetic types such as 
	/// <see cref="Int32"/>, <see cref="Int64"/>, 
	/// etc., do not have an inverse as defined in IInvertible.
	/// </summary>
	/// <typeparam name="T">Type which has aritmetic operations defined on.</typeparam>
	/// <remarks>
	/// Adapted from an article on lambda-computing.com: 
	/// http://www.lambda-computing.com/publications/articles/generics/IArithmetic.cs.
	/// </remarks>
	public interface IArithmetic<T> : INegatable<T>, IDivisible<T>, IHasOne<T>
	{ }
}
